public class FinalizationTest {
    
    public static void main(String[] args) {
        Cake c1 = new Cake(1);
        Cake c2 = new Cake(2);
        Cake c3 = new Cake(3);
        
        c2 = c3 = null;  
        System.gc(); //调用Java垃圾收集器
    }
}

class Cake extends Object {  
    private int id;

    public Cake(int id)
    {  
      this.id = id;
      System.out.println("Cake Object " + id + " is created");
    }

    @Override 
    protected void finalize() throws java.lang.Throwable {
      System.out.println("Cake Object " + id + " is disposed");
    }
}

class Cake1 {  
    private int id;

    public Cake1(int id)
    {  
      this.id = id;
      System.out.println("Cake1 Object " + id + " is created");
    }

    @Override 
    protected void finalize() throws java.lang.Throwable {
      System.out.println("Cake1 Object " + id + " is disposed");
    }
}
